﻿
namespace Xenta.Enums
{
    /// <summary>
    /// Defines the customer sort options.
    /// </summary>
    public enum CustomerSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the order item sort options.
    /// </summary>
    public enum OrderItemSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by SKU.
        /// </summary>
        SKU,

        /// <summary>
        /// Order by price.
        /// </summary>
        Price,

        /// <summary>
        /// Order by quantity.
        /// </summary>
        Quantity,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the order sort options.
    /// </summary>
    public enum OrderSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by total.
        /// </summary>
        Total,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the payment sort options.
    /// </summary>
    public enum PaymentSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by amount.
        /// </summary>
        Amount,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the sales item sort options.
    /// </summary>
    public enum SalesItemSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by SKU.
        /// </summary>
        SKU,

        /// <summary>
        /// Order by price.
        /// </summary>
        Price,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the sales option sort order.
    /// </summary>
    public enum SalesOptionSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by code name.
        /// </summary>
        CodeName,

        /// <summary>
        /// Order by code value.
        /// </summary>
        CodeValue,

        /// <summary>
        /// Order by price.
        /// </summary>
        Price,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the sales rule history sort order.
    /// </summary>
    public enum SalesRuleHistorySortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the sales rule sort order.
    /// </summary>
    public enum SalesRuleSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by name.
        /// </summary>
        Name,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the seller address sort options.
    /// </summary>
    public enum SellerAddressSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by contact name.
        /// </summary>
        ContactName,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the seller sort options.
    /// </summary>
    public enum SellerSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by review count.
        /// </summary>
        ReviewCount,

        /// <summary>
        /// Order by review count.
        /// </summary>
        RatingAverage,

        /// <summary>
        /// Order by display name.
        /// </summary>
        DisplayName,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the shopping cart item sort options.
    /// </summary>
    public enum ShoppingCartItemSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by quantity.
        /// </summary>
        Quantity,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the shopping cart sort options.
    /// </summary>
    public enum ShoppingCartSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by total.
        /// </summary>
        Total,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the invoice sort options.
    /// </summary>
    public enum InvoiceSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by total.
        /// </summary>
        Total,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn,

        /// <summary>
        /// Order by issue date.
        /// </summary>
        IssuedOn
    }

    /// <summary>
    /// Defines the customer address sort options.
    /// </summary>
    public enum CustomerAddressSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by contact name.
        /// </summary>
        ContactName,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the stock entry sort options.
    /// </summary>
    public enum StockEntrySortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by SKU.
        /// </summary>
        SKU,

        /// <summary>
        /// Order by reserve.
        /// </summary>
        Reserve,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }
}
